/**
 * 
 */
package com.cuc.platform.core.service;

import java.util.List;

import com.cuc.platform.core.domain.baseInfo.Attr;
import com.cuc.platform.core.domain.baseInfo.AttrType;

/**
 * @author peepul
 *
 * 公共属性统一管理业务接口
 */
public interface AttrManagerService {
	
	/**
	 * 根据id标识获取AttrType对象
	 * 
	 * @param id
	 * @return AttrType
	 */
	public AttrType getAttrType(Long id);
	
	/**
	 * 获取所有AttrType对象
	 * 
	 * @return AttrType List
	 */
	public List<AttrType> getAllAttrTypes();
	
	/**
	 * 新增AttrType对象
	 * 
	 * @param attrType
	 */
	public void insertAttrType(AttrType attrType) throws ServiceException;
	
	/**
	 * 更新AttrType对象
	 * 
	 * @param attrType
	 * @throws ServiceException
	 */
	public void updateAttrType(AttrType attrType) throws ServiceException;
	
	/**
	 * 根据id删除AttrType对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public void delAttrType(Long id) throws ServiceException;	
	
	/**
	 * 根据AttrType id获取对应的Attr对象集合
	 */
	public List<Attr> getAttrsByType(Long attrTypeId);
	
	/**
	 * 删除AttrType对象，同时级联删除对应的所有子Attr对象
	 * 
	 * 注：如果有被业务系统使用的属性，通常是不能删除的
	 */
	public void delTypeWithAllAttrs(Long attrTypeId) throws ServiceException;
	
	/**
	 * 根据id标识获取Attr对象
	 * 
	 * @param id
	 * @return Attr
	 */
	public Attr getAttr(Long id);
	
	/**
	 * 新增Attr对象
	 * 
	 * @param attrTypeId, Attr
	 */
	public void insertAttr(Long attrTypeId, Attr attr) throws ServiceException;
	
	/**
	 * 更新Attr对象
	 * 
	 * @param Attr
	 * @throws ServiceException
	 */
	public void updateAttr(Attr attr) throws ServiceException;
	
	/**
	 * 根据id删除Attr对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public void delAttr(Long id) throws ServiceException;	
	
	/**
	 * 根据条件查询对象列表
	 * 
	 * @param  AttrType
	 */
	public  List<AttrType> queryAttrTypes(AttrType attrType) throws ServiceException;	
}
